﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Net;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Threading;
using System.Web.Http;

using ZeusLite.Code;

namespace ZeusLite.Controllers
{
  /// <summary>
  /// HU - Nyelvi csomag
  /// EN - Language Package
  /// </summary>
  public class LanguagePackController : ApiController
  {
    /// <summary>
    /// 
    /// </summary>
    LangPackResult res = null;

    /// <summary>
    /// 
    /// </summary>
    private void language_DE()
    {
      // # MENU
      // #

      // Loading in
      res.Menu.Add(
        new ZeusMenu("Lagerung",
          new ZeusMenuItem[] 
          {
            new ZeusMenuItem("PackageReceive", "Wareneingang", "Wareneingang mit EAN-Code"),
            new ZeusMenuItem("PackageReceiveList", "Wareneingang", "Wareneingang mit Liste"),
            new ZeusMenuItem("PackageReturn", "Rückkehr", "Kundenretourenmanagement"),
            new ZeusMenuItem("PackageStore", "Lagerung", "Fracht eingelagert, überspeichern"),
  	    new ZeusMenuItem("PackageRefill", "Refill-Liste", "Fracht Refill Liste")  	    
          }
        )
      );

      // Loading out
      res.Menu.Add(
        new ZeusMenu("Informationen",
          new ZeusMenuItem[] 
          {
  	    new ZeusMenuItem("PackageInfo", "Fracht Info", "Detaillierte Informationen über Fracht"),
  	    new ZeusMenuItem("PackageUnstored", "Unlager Liste", "Unlager Fracht Liste")				
          }
        )
      );

      // Loading out
      res.Menu.Add(
        new ZeusMenu("Entfernung",
          new ZeusMenuItem[] 
          {
  	    new ZeusMenuItem("PickingList", "Kommissionierliste", "beleglose Kommissionierung Liste"),
  	    new ZeusMenuItem("Picking Ad Hoc", "Ad-hoc-Kommissionierung", "Kommissionierung ohne Geschichte")
          }
        )
      );

      // Inventory
      res.Menu.Add(
        new ZeusMenu("Inventar",
          new ZeusMenuItem[] 
          {
	    new ZeusMenuItem("PackageInventory1", "Fracht Inventar 1", "Fracht Inventar, Zählen 1"),
	    new ZeusMenuItem("PackageInventory2", "Fracht Inventar 2", "Fracht Inventar, Zählen 2"),
	    new ZeusMenuItem("PackageInventoryEan1", "EAN Inventar 1", "Fracht Inventar mit EAN-Code, Zählen 1"),
	    new ZeusMenuItem("PackageInventoryEan2", "EAN Inventar 2", "Fracht Inventar mit EAN-Code, Zählen 2"),
          }
        )
      );

      // # SCREEN
      // #

      res.Page.Add(
        new ZeusPage("Settings",
          new ZeusPageItem[] 
          {
  	    new ZeusPageItem("Settings", "Einstellungen"),
  	    new ZeusPageItem("Language", "Sprache"),
  	    new ZeusPageItem("Server", "Server"),
  	    new ZeusPageItem("User", "Benutzer"),
  	    new ZeusPageItem("Password", "Passwort"),
  	    new ZeusPageItem("Login", "Einloggen"),
  	    new ZeusPageItem("Download", "nachladen"),
  	    new ZeusPageItem("Remove", "entfernen"),
  	    new ZeusPageItem("NotFound", "Sprachdatei nicht gefunden!")
          }
        )
      );

      res.Page.Add(
        new ZeusPage("Main",
          new ZeusPageItem[] 
          {
  	    new ZeusPageItem("Settings", "Einstellungen"),
  	    new ZeusPageItem("NeedLogin", "Sie sind nicht angemeldet!"),
  	    new ZeusPageItem("DemoExpired", "Ende der Probezeit!")
          }
        )
      );

      res.Page.Add(
        new ZeusPage("PackageReceive",
          new ZeusPageItem[] 
          {
            new ZeusPageItem("PackageReceive", "Wareneingang"),
  	    new ZeusPageItem("Recent", "Kurzem"),
  	    new ZeusPageItem("Supply", "Versand"),
  	    new ZeusPageItem("Package", "Fracht"),
  	    new ZeusPageItem("Ean", "Ean8,Ean13,Ean128"),
  	    new ZeusPageItem("Quantity", "Menge"),
  	    new ZeusPageItem("Ok", "OK")
          }
        )
      );

      res.Page.Add(
        new ZeusPage("PackageReceiveList",
          new ZeusPageItem[] 
          {
            new ZeusPageItem("PackageReceive", "Wareneingang"),
  	    new ZeusPageItem("Recent", "Kurzem"),
  	    new ZeusPageItem("Supply", "Versand"),
  	    new ZeusPageItem("Package", "Fracht"),
  	    new ZeusPageItem("Expired", "Ablaufdatum"),
  	    new ZeusPageItem("Quantity", "Menge"),
  	    new ZeusPageItem("Ok", "OK")
          }
        )
      );

      res.Page.Add(
        new ZeusPage("PackageReturn",
          new ZeusPageItem[] 
        {
	  new ZeusPageItem("PackageReturn", "Rückkehr"),
	  new ZeusPageItem("Recent", "Kurzem"),
	  new ZeusPageItem("Type", "Art"),
	  new ZeusPageItem("TypeText", "Rückkehr, Andere"),
	  new ZeusPageItem("Package", "Fracht"),
	  new ZeusPageItem("Quantity", "Menge"),
	  new ZeusPageItem("Ok", "OK"),
	  new ZeusPageItem("Clear", "Historische Löschen")
        }
        )
      );


      res.Page.Add(
        new ZeusPage("PackageStore",
          new ZeusPageItem[] 
          {
            new ZeusPageItem("PackageStore", "Lagerung"),
  	    new ZeusPageItem("Recent", "Kurzem"),
  	    new ZeusPageItem("Package", "Fracht"),
  	    new ZeusPageItem("Location", "Position"),
  	    new ZeusPageItem("Ok", "OK")
          }
        )
      );

      res.Page.Add(
        new ZeusPage("PackageRefill",
          new ZeusPageItem[] 
          {
            new ZeusPageItem("PackageRefill", "Refill-Liste"),
  	    new ZeusPageItem("Refresh", "neu laden")
          }
        )
      );

      res.Page.Add(
        new ZeusPage("PackageUnstored",
          new ZeusPageItem[] 
          {
            new ZeusPageItem("PackageUnstored", "Unlager Liste"),
  	    new ZeusPageItem("Refresh", "neu laden")
          }
        )
      );

      res.Page.Add(
        new ZeusPage("PackageInfo",
          new ZeusPageItem[] 
          {
            new ZeusPageItem("PackageInfo", "Fracht Info"),
  	    new ZeusPageItem("Recent", "Kurzem"),
  	    new ZeusPageItem("Package", "Fracht"),
  	    new ZeusPageItem("Ok", "OK")
          }
        )
      );


      res.Page.Add(
        new ZeusPage("PickingList",
          new ZeusPageItem[] 
          {
  	    new ZeusPageItem("PickingList", "Kommissionierliste"),
  	    new ZeusPageItem("Refresh", "neu laden"),
  	    new ZeusPageItem("Close", "Zu Schließen"),  		      
  	    new ZeusPageItem("Ok", "OK"),
  	    new ZeusPageItem("ChgQua", "Menge Änderung"),
  	    new ZeusPageItem("AreYouSure", "Sicherheit schließt die Kommissionierliste?"),
  	    new ZeusPageItem("Cancel", "Nein")
          }
        )
      );

      res.Page.Add(
        new ZeusPage("PickingAdHoc",
          new ZeusPageItem[] 
          {
  	    new ZeusPageItem("PickingAdHoc", "Ad-hoc-"),
  	    new ZeusPageItem("Recent", "Kurzem"),
  	    new ZeusPageItem("Picking", "Versand"),
  	    new ZeusPageItem("Package", "Fracht"),
  	    new ZeusPageItem("Quantity", "Menge"),
  	    new ZeusPageItem("Ok", "OK")

          }
        )
      );


      res.Page.Add(
        new ZeusPage("PackageInventory",
          new ZeusPageItem[] 
          {
  	    new ZeusPageItem("PackageInventory", "Fracht Inventar"),
  	    new ZeusPageItem("Recent", "Kurzem"),
  	    new ZeusPageItem("Location", "Position"),
  	    new ZeusPageItem("Package", "Fracht"),
  	    new ZeusPageItem("Quantity", "Menge"),
  	    new ZeusPageItem("Ok", "OK"),
  	    new ZeusPageItem("Info", "Info")
          }
        )
      );

      res.Page.Add(
        new ZeusPage("PackageInventoryEan",
          new ZeusPageItem[] 
          {
  	    new ZeusPageItem("PackageInventoryEan", "EAN Inventar"),
  	    new ZeusPageItem("Recent", "Kurzem"),
  	    new ZeusPageItem("Location", "Position"),
  	    new ZeusPageItem("Package", "Fracht"),
  	    new ZeusPageItem("Ean", "Ean8,Ean13,Ean128"),
  	    new ZeusPageItem("Quantity", "Menge"),
  	    new ZeusPageItem("Ok", "OK")
          }
        )
      );

    }

    /// <summary>
    /// 
    /// </summary>
    /// <param name="page">Page name</param>
    /// <param name="lang">Language code</param>
    /// <returns></returns>
    public HttpResponseMessage Get([FromUri] string page, [FromUri] string lang)
    {
      try
      {
        res = new LangPackResult();

        switch (lang)
        {
          // Hungarian and US-English are predefined
          //   Change only if you want to use other naming conventions
          //
          case "hu-HU":
          case "en-US":
            break;

          // German language
          case "de-DE":
            language_DE();
            break;

          default:
            break;
        }
      }
      catch (Exception ex)
      {
        res.ErrorCode = 1;
        res.ErrorText = ex.Message;
      }

      // JSON formatted result
      var formatter = new JsonMediaTypeFormatter();

      return Request.CreateResponse(HttpStatusCode.OK, res, formatter);
    }
  }
}
